// 使用interface定义Person对象
interface PersonInterface {
    name: string,
    age: number,
}

interface PersonInterface {
    speak(): void
}

interface StudentInterface extends PersonInterface{
    grade:string
}


//使用type定义Person对象，并通过交叉类型实现属性的合并
type PersonType = {
    name: string,
    age: number,
} & {
    speak():void
}
// 使type定义Student类型，并通过交叉类型继承PersonType
type StudentType = PersonType & {
    grade:string
}


/**
 * 
 * 总结：interface与type的区别
 * 相同点：interface和type都可以用于定义对象结构，两者在许多场景中是可以交换的
 * 不同点：
 * 1.interface:更专注于定义对象和类的结构，支持继承，合并
 * 2.type：可以定义类型别名，联合类型，交叉类型，但不支持继承和自动合并
 * 
 */

